package com.houshuai.emqtt.callback;

import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.stereotype.Service;

/**
 * FileName: PushCallBack
 * author:   候帅
 * data:     2018/7/9 22:21
 * Description: TODO
 * History:
 */
@Slf4j
@Service
public class PushCallBack implements MqttCallback {
//  在断开连接时调用
    @Override
    public void connectionLost(Throwable throwable) {
        // TODO 进行断开重连
// 连接丢失后，一般在这里面进行重连
        log.info("当前链接断开"+throwable.getMessage());
    }

    //    接收已经预订的发布。
    @Override
    public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
        // subscribe后得到的消息会执行到这里面
        log.info("接受消息的主题:"+s);
        log.info("接受消息Qos:"+mqttMessage.getQos());
        log.info("接受消息内容:"+ new String(mqttMessage.getPayload()));
    }

    //    接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用。
//    由 MqttClient.connect 激活此回调
    @Override
    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
        log.info("token内容为:"+iMqttDeliveryToken.isComplete());

    }
}
